window.workspace = function(){
	var response = <?#$respons?>;
	var mform, mtree, layout;
	mform = new Ext.form.FormPanel({
		region		: 'east',
		width		: 460,
		bodyStyle	: 'padding:8px;',
		split       : true,
		collapseMode: 'mini',
		bodyBorder  : false,
		animCollapse: true,
		labelWidth	: 136,
		labelAlign  : 'right',
		defaults	: {
			xtype	: 'textfield'
		},
		items		: [{
			xtype		: 'hidden',
			name		: 'id',
			value		: 0
		},{
    		xtype		: 'combo',
            store		: new Ext.data.JsonStore({
	        	fields: ['id','title'],
	        	root	: 'dataset',
	        	autoLoad: true,
            	proxy   : new Ext.data.HttpProxy({
					url : '/admin/menu/doupmod.html'
				})
	    	}),
			displayField	: 'title',
			valueField		: 'id',
			mode			: 'local',
			emptyText		: '请选择',
            fieldLabel		: '顶级模块',
            editable		: false,
            typeAhead		: true,
            forceSelection	: true,
            width			: 100,
			triggerAction	: 'all',
			hiddenName		: 'ppid',
            name			: 'ppid',
            listeners		: {
		         'select'   : function(obj, data){
		         	if(data.get('id') > 0) {
		         		var combo = mform.getForm().findField('pid');
		         		combo.store.baseParams.pid = data.get('id');
		         		combo.store.reload();
		         		combo.reset();
		         	}
		         }
		    }
		 },{
    		xtype		: 'combo',
            store		: new Ext.data.JsonStore({
            	root	: 'dataset',
            	proxy   : new Ext.data.HttpProxy({
					url : '/admin/menu/doupmod.html'
				}),
	        	fields	: ['id','title']
	    	}),
			displayField	: 'title',
			valueField		: 'id',
			mode			: 'local',
			emptyText		: '请选择',
            fieldLabel		: '次级模块',
            editable		: false,
            typeAhead		: true,
            forceSelection	: true,
            width			: 140,
			triggerAction	: 'all',
			hiddenName		: 'pid',
            name			: 'pid'
		 },{
			xtype		: 'textfield',
			fieldLabel	: '模块名称',
			width		: 140,
			name		: 'title',
			allowBlank	: false
		},{
			xtype		: 'textfield',
			fieldLabel	: '模块名称[English]',
			width		: 140,
			name		: 'title_en',
			allowBlank	: false
		},{
			xtype		: 'textfield',
			fieldLabel	: '请求Path地址',
			width		: 240,
			name		: 'action'
		},{
			xtype		: 'textarea',
	 		fieldLabel	: '备注说明',
			width		: 240,
			height		: 65,
			name		: 'memo'
		},{
    		xtype		: 'combo',
            store		: new Ext.data.ArrayStore({
	        	fields: ['id','name'],
	        	data: response.icon
	    	}),
			displayField	: 'name',
			valueField		: 'id',
			mode			: 'local',
			emptyText		: '请选择',
            fieldLabel		: '模块Icon图标',
            editable		: false,
            typeAhead		: true,
            forceSelection	: true,
            width			: 80,
            allowBlank		: false,
			triggerAction	: 'all',
			hiddenName		: 'sicon',
            name			: 'sicon',
            listeners		: {
		         'select'   : function(obj){
		         	var txt = Ext.util.Format.stripTags(obj.lastSelectionText);
		         	obj.lastSelectionText = txt;
		         	obj.getEl().dom.value = txt;
		         }
		    }
		 },{
    		xtype		: 'combo',
            store		: new Ext.data.ArrayStore({
	        	fields: ['id','name'],
	        	data: main.cv2Array(response.ishow)
	    	}),
			displayField	: 'name',
			valueField		: 'id',
			mode			: 'local',
			emptyText		: '请选择',
            fieldLabel		: '是否展示',
            editable		: false,
            typeAhead		: true,
            forceSelection	: true,
            value			: 1,
            width			: 80,
            allowBlank		: false,
			triggerAction	: 'all',
			hiddenName		: 'ishow',
            name			: 'ishow'
		 },{
    		xtype		: 'combo',
            store		: new Ext.data.ArrayStore({
	        	fields: ['id','name'],
	        	data: main.cv2Array(response.isdefault)
	    	}),
			displayField	: 'name',
			valueField		: 'id',
			mode			: 'local',
			emptyText		: '请选择',
            fieldLabel		: '是否默认模块',
            editable		: false,
            typeAhead		: true,
            forceSelection	: true,
            value			: 0,
            width			: 80,
            allowBlank		: false,
			triggerAction	: 'all',
			hiddenName		: 'isdefault',
            name			: 'isdefault'
		 },{
			xtype		: 'textfield',
	 		fieldLabel	: '排序',
	 		width		: 60,
	 		value		: 0,
			name		: 'order',
			allowBlank	: false
		},{
			xtype		: 'combo',
			store		: new Ext.data.ArrayStore({
				fields: ['id','name'],
				data: main.cv2Array(response.status)
			}),
			displayField	: 'name',
			valueField		: 'id',
			mode			: 'local',
			emptyText		: '请选择',
            fieldLabel		: '模块状态',
            value			: 1,
            editable		: false,
            typeAhead		: true,
            forceSelection	: true,
            width			: 80,
            allowBlank		: false,
			triggerAction	: 'all',
			hiddenName		: 'status',
            name			: 'status'
		}],
		tbar			: [{
			text	: '刷新',
			iconCls	: 'icon-refresh',
			handler : function(){
				mform.getForm().reset();
			}
		},'-',{
			text	: '复制模块',
			iconCls	: 'icon-copy',
			handler : function(){
				mform.getForm().findField('id').setValue(0);
			}
		},'-',{
			text	: '保存',
			iconCls	: 'icon-save',
			url		: '/admin/menu/dosave.html',
			handler : function() {
				if(!mform.getForm().isValid())
					return;
				mform.getForm().submit({
	        		waitMsg 	: '数据提交处理中...',
					waitTitle 	: '信息提示',
	        		clientValidation: true,
	        		url		: '/admin/menu/dosave.html',
		        	success	: function(form, action) {
		        		mform.getForm().findField('ppid').store.reload();
		        		mform.getForm().findField('pid').store.reload();
		        		mform.getForm().reset();
		        		mtree.getRootNode().reload();
					},
					failure	: main.submitFailure
		    	});
			}
		}]
	});
	
	mtree = new Ext.tree.TreePanel({
		region			: 'center',
		useArrows		: true,
		autoScroll		: true,
		animate			: true,
		containerScroll	: true,
		border			: false,
		rootVisible		: false,
		tbar			: [{
			text	: '刷新',
			iconCls	: 'icon-refresh',
			handler : function(){
				mtree.getRootNode().reload();
				mtree.getRootNode().expand(true);
			}
		},'-',{
			text	: '加载权限',
			iconCls	: 'icon-key',
			url		: '/admin/menu/doaccess.html',
			handler: function() {
				access = mtree.getChecked('id');
				if(access.length < 1) {
					Ext.Msg.alert('信息提示', '请先勾选要管理权限的模块');
					return;
				}
				var mask = new Ext.LoadMask(Ext.getBody(), {msg:"数据权限更新中，请耐心等待..."});
				mask.show();
				Ext.Ajax.request({
					timeout : 600000,
					params	: {ids:access.join(',')},
					url		: '/admin/menu/doaccess.html',
					success	: function(resp, req){
						mask.hide();
						mtree.getRootNode().reload();
						mtree.getRootNode().expand(true);
		        	}
				});
			}
		},'-',{
			text	: '删除菜单',
			iconCls	: 'icon-delete',
			url		: '/admin/menu/doremove.html',
			handler : function() {
				var sm = mtree.getSelectionModel(); 
				var rs = sm.getSelectedNode();
				if(!rs) {
					Ext.Msg.alert('信息提示', '请选择要删除的记录！'); 
					return;
				} else if(rs.childNodes.length > 0) {
					Ext.Msg.alert('信息提示', '请先删除子节点记录！'); 
					return;
				}
				Ext.Msg.confirm('信息提示', '您确认要删除选中的记录？删除将不能恢复。',
				function(btn){
					if(btn != 'yes') {
						return;
					}
					sm.unselect(rs, true);
			        Ext.Ajax.request({
			        	url 	: '/admin/menu/doremove.html',
			        	params	: {ids:rs.attributes.id},
			        	success	: function(resp, req) {
			        		var data = Ext.decode(resp.responseText);
			        		if(data.code != 0) {
			        			Ext.Msg.alert('信息提示', data.msg); return;
			        		}
			        		mtree.getRootNode().reload();
			        	}
			        });
				});
			}
		}],
		loader 			: {
			dataUrl		: '/admin/menu/dotree.html',
			baseParams 	: {'status':1}
		},
		root			: {
			nodeType	: 'async'
		},
		listeners 		: {
			'click'	: function(node) {
				var obj;
				for(var field in node.attributes) {
					if(Ext.isString(field) && (obj=mform.getForm().findField(field))) {
						obj.setValue(node.attributes[field]);
					}
				}
				var sicon = '默认';
				for(var i=0; i < response.icon.length; i++) {
					if(response.icon[i][0] == node.attributes['sicon']) {
						sicon = Ext.util.Format.stripTags(response.icon[i][1]);
					}
				}
				mform.getForm().findField('sicon').getEl().dom.value=sicon;
				var pnode  = node.parentNode; 
				var ppnode = pnode.parentNode;
				var root   = mtree.getRootNode();
				var pobj   = mform.getForm().findField('pid');
				var ppobj  = mform.getForm().findField('ppid');
				if(pnode == root) {
					ppobj.setValue(0);
					ppobj.setRawValue('顶级模块');
					pobj.setValue(0);
					pobj.setRawValue('顶级模块');
				} else if(ppnode == root) {
					ppobj.setValue(pnode.attributes.id);
					ppobj.setRawValue(pnode.attributes.title);
					pobj.setValue(0);
					pobj.setRawValue('顶级模块');
				} else {
					ppobj.setValue(ppnode.attributes.id);
					ppobj.setRawValue(ppnode.attributes.title);
					pobj.setValue(pnode.attributes.id);
					pobj.setRawValue(pnode.attributes.title);
				}
			}
		}
	});
	mtree.getRootNode().expand(true);
	layout = {
		title	: response.title,
		layout	: 'border',
		region	: 'center', 
		items	: [mform, mtree]
	}
	return layout;
}();